![]() | EJECUCIÓN (Comienzo y Fin) |
x
es igual a la evaluación normal (que no tiene operador explícito), pero combinada con la operación contraria (“fin de la ejecución”), se tienen dos posibilidades adicionales:
x
puede interrumpirse (por ejemplo, cuando se produzca una cierta condición).
x
. Si no se especifica, supone la evaluación de la expresión x
.
x
o forzar la evaluación de x
: x!
¡
y
: y¡
(y
puede ser x
o una expresión de orden superior a x
)
z
: ¡z
y
y devolver z
como resultado: y¡z
(y
puede ser x
o una expresión de orden superior a x
)
s
.
〈( mayor(s) = ( (r = s\1)
[ i=[1…s#]
((s\i > r) → (r = s\i)) ]
¡r )! )〉
mayor(−1 7 12 5) // ev. 12
mayor(123) // ev. 3 (secuencia de 3 componentes)
mayor( 123 ) // ev. 123 (secuencia de un componente)
mayor(2.5 7.2 6.1) // ev. 7.2
〈( suma(n) = ( k=0
[ m=[1…]
(k = k+m)
( k>n → ¡(k−m)) ] ) )〉
(suma(25))! // ev. 21 (1+2+3+4+5+6)
(a=3 b=4 ¡(a+b))! // ev. 12
〈( f(x y) = (¡(x+y) ←' x>y → ¡(x+y)) )! )〉
f(3 4) // ev. 7
f(4 3) // ev. 12
〈( f(x y) = ((x+y) ←' x>y → (x+y)) ) )〉
〈( (minimo(n1 n2) = ((m=n1 ← n1≥n2) →' m=n2) ¡m))! )〉
〈( (minimo(n1 n2) = (n1 ← n1≥n2) →’ n2) )〉
( 1…4 )! // ev. ( 1 2 3 4)
(a=3 b=4)
(x =: a+b)
x // rep. a+b
x! // ev. 7
( 1… )! // se autoevalúa porque la expresión es infinita: (1 2 3 4 ...)
(ab★4)! // ev. ( ab ab ab ab )
(ab★)! // se autoevalúa porque la expresión es infinita: (ab ab ab ...)
- ([a [u v] b])! // ev. (a u b a v b)
!
y ¡
son como delimitadores dinámicos. Su simetría es de tipo vertical. En cambio, los paréntesis son delimiadores estáticos y tienen simetría horizontal.
x!!
indica que el resultado de la ejecución de x
se vuelve a ejecutar.
〈( (x¡)! = x )〉
〈( (x°)! = x )〉
〈( (x¡ ← z →' ¡y)! = (x ← z →' y) )〉
(¡! = θ )
〈( (x° = x) → (x! = x) )〉
x
se autoevalúa, entonces la expresión x!
es igual a x